# 定义一个圆形类,半径是这个圆形的属性,实例化一个半径为5的圆形,一个半径为10的圆形，
# 定义方法计算圆形的面积和周长

# class Cycle():
#     def __init__(self, r):
#         self.r = r
#
#     def area(self):
#         return 3.14 * self.r ** 2
#
#     def perimeter(self):
#         return 2 * 3.14 * self.r
#
# c1 = Cycle(5)
# c2 = Cycle(10)
#
# print(c1.area())
# print(c1.perimeter())


# 补充代码，实现用户登录和注册

class User:
    def __init__(self, name, pwd):
        self.name = name
        self.pwd = pwd

class Account:
    def __init__(self):
        # 用户列表，数据格式：[user对象，user对象，user对象]
        self.user_list = []

    def login(self, name, password):
        """
        用户登录，输入用户名和密码然后去self.user_list中校验用户合法性
        :return:
        """
        for userObj in self.user_list:
            if userObj.name == name:
                if userObj.pwd == password:
                    print("登录成功!")
                else:
                    print("登录失败, 密码不正确")
                break
        else:
            print(f"您的用户名: {name} 不存在, 请先注册")
    def register(self, name, password):
        """
        用户注册，每注册一个用户就创建一个user对象，然后添加到self.user_list中，表示注册成
        功。
        :return:
        """
        for userObj in self.user_list:
            if userObj.name == name:
                print(f"您当前用户名: {name} 已经被注册")
                break
        else:
            # user = User(name, password)
            self.user_list.append(User(name, password))
            print("注册成功!")

    def run(self, name, password, runType):
        """
        主程序
        :return:
        """
        if runType == 'login':
            self.login(name, password)
        else:
            self.register(name, password)


obj = Account()

while True:
    runType = input("请输入您要操作的类型(login/register/Q(退出)): ")

    if runType.upper() == "Q":
        print("您选择退出, Bye!")
        break
    else:
        if runType not in ("login", "register"):
            print("您输入的指令不正确, 应该输入: login/register/Q(退出)")
            continue

        name = input("请输入用户名: ")
        password = input(("请输入密码: "))

        obj.run(name, password, runType)